package com.tt.StackQueue;

import java.util.LinkedList;
import java.util.Queue;

public class MyStack {
    private Queue<Integer> queue1;
    private Queue<Integer> queue2;

    public MyStack() {
        queue1 = new LinkedList<>();
        queue2 = new LinkedList<>();
    }

    // 入栈操作，默认往 queue1 中添加元素
    public void push(int x) {
        queue1.offer(x);
    }

    // 出栈操作
    public int pop() {
        // 将 queue1 中除最后一个元素外，其余元素转移到 queue2
        while (queue1.size() > 1) {
            queue2.offer(queue1.poll());
        }
        int result = queue1.poll();
        // 交换 queue1 和 queue2，保证后续操作默认在 queue1 进行
        Queue<Integer> temp = queue1;
        queue1 = queue2;
        queue2 = temp;
        return result;
    }

    // 获取栈顶元素
    public int top() {
        while (queue1.size() > 1) {
            queue2.offer(queue1.poll());
        }
        int result = queue1.poll();
        queue2.offer(result);
        Queue<Integer> temp = queue1;
        queue1 = queue2;
        queue2 = temp;
        return result;
    }

    // 判断栈是否为空
    public boolean empty() {
        return queue1.isEmpty() && queue2.isEmpty();
    }
}